
/**
 * 最长连续子序列
 * 
 * 题目描述

有N个正整数组成的一个序列。给定整数sum，求长度最长的连续子序列，使他们的和等于sum，返回此子序列的长度，

如果没有满足要求的序列，返回-1。

输入描述
第一行输入是：N个正整数组成的一个序列

第二行输入是：给定整数sum

输出描述
最长的连续子序列的长度

备注
输入序列仅由数字和英文逗号构成，数字之间采用英文逗号分隔
序列长度：1 <= N <= 200
输入序列不考虑异常情况
用例
输入	
1,2,3,4,2
6
输出	3
说明	1,2,3和4,2两个序列均能满足要求，所以最长的连续序列为1,2,3，因此结果为3。
输入	1,2,3,4,2
20
输出	-1
说明	没有满足要求的子序列，返回-1

 */

import java.util.Arrays;
import java.util.Scanner;

/**
  * 
  前缀和解法
本题数量级不大，可以考虑求解输入序列的前缀和数组，实现O(1)时间复杂度计算任意区间和，
关于前缀和可以看：算法设计 - 前缀和 & 差分数列_伏城之外的博客-CSDN博客
  */
public class 最长连续子序列 {
    
    public static void main(String[] args) {
    

        try{

            Scanner scanner = new Scanner(System.in);

            //输入整数数组
            int[] inputArr = Arrays.stream(scanner.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();
            //输入求和目标值
            int target = Integer.parseInt(scanner.nextLine());

            //前缀和  快速计算区间和：
            // int[] preSum = new int[inputArr.length];
            // preSum[0] = inputArr[0];
            // for(int i=1; i<inputArr.length; i++){
            //     preSum[i] = preSum[i-1] + inputArr[i];
            // }

            int n = inputArr.length;

            int[] preSum = new int[n + 1];
            for (int i = 1; i <= n; i++) {
                preSum[i] = preSum[i - 1] + inputArr[i - 1];
            }


            //Arrays.stream(preSum).forEach(System.out::println);

            //记录最长连续子序列的长度
            int maxLen = -1;

            //求解所有连续子序列的区间和

            // for(int left=0; left<inputArr.length; left++){

            //     for(int right=left+1; right<inputArr.length; right++){
            //         if(preSum[right] - preSum[left] == target){

            //             //求出目前和的
            //             maxLen = Math.max(maxLen, right - left + 1);

            //         }

            //     }
            // }

            for(int left=0; left<n; left++){

                for(int right=left+1; right<=n; right++){
                    if(preSum[right] - preSum[left] == target){

                        //求出目前和的
                        maxLen = Math.max(maxLen, right - left);

                    }

                }
            }


            //前缀和的变体，为了便于后面计算位数，前面加个 0
            //位数  右下标 - 左下标

            System.out.println(maxLen);



        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
